﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data;
using System.Collections;
using ReservaCancha.RegistroHorarioWS;

namespace ReservaCancha.Controllers
{
    public class HorarioController : Controller
    {
        private List<Horario> CrearHorario()
        {
            List<Horario> horarios = new List<Horario>();
            RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
            //return proxy.ListarHorarios();
            //horarios = proxy.ListarHorarios();
            foreach (Horario h in proxy.ListarHorarios())
            {
                horarios.Add(new Horario());
                horarios[horarios.Count - 1].Codigo = h.Codigo;
                horarios[horarios.Count - 1].Dia = h.Dia;
                horarios[horarios.Count - 1].Disponible = h.Disponible;
                horarios[horarios.Count - 1].Hora = h.Hora;
                horarios[horarios.Count - 1].NroCancha = h.NroCancha;
            }
            return horarios;
        }

        private Horario ObtenerHorarios(int codigo)
        {

            List<Horario> horarios = (List<Horario>)Session["horarios"];
            RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
            Horario model = horarios.Single(delegate(Horario horario)
                                                {

                                                    if (horario.Codigo == codigo) return true;
                                                    else return false;

                                                });
            return model;
        }

        private Horario ObtenerHorario(int codigo)
        {
            List<Horario> horarios = (List<Horario>)Session["horarios"];
            RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
            Horario model = horarios.Single(delegate(Horario horario)
            {

                if (horario.Codigo == codigo) return true;
                else return false;

            });
            return model;
        }

        //
        // GET: /Horario/

        public ActionResult Index()
        {
            if (Session["horarios"] == null)
                Session["horarios"] = CrearHorario();
            List<Horario> model = CrearHorario();
            Session["horarios"] = model;
            return View(model);
        }

        //
        // GET: /Horario/Details/5

        public ActionResult Details(int id)
        {
            Horario model = ObtenerHorario(id);
            RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
            model = proxy.ObtenerHorario(id);
            return View(model);
        }

        //
        // GET: /Horario/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Horario/Create

        [HttpPost]
        public ActionResult Create(string dia, string hora, string disponible, string nrocancha)
        {
            try
            {
                List<Horario> horarios = (List<Horario>)Session["horarios"];
                RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
                Horario horarioACrear = new Horario();
                {
                    horarioACrear.Dia = dia;
                    horarioACrear.Hora = hora;
                    horarioACrear.Disponible = disponible;
                    horarioACrear.NroCancha = nrocancha;
                    proxy.CrearHorario(dia, hora, disponible, nrocancha);
                }

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /Horario/Edit/5
 
        public ActionResult Edit(int id)
        {
            Horario model = ObtenerHorario(id);
            RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
            model = proxy.ObtenerHorario(id);
            return View(model);
        }

        //
        // POST: /Horario/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, string dia, string hora, string disponible, string nrocancha)
        {
            try
            {
                Horario model = ObtenerHorario(id);
                RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
                model = proxy.ObtenerHorario(id);
                model.Codigo=id;
                model.Dia = dia;
                model.Hora = hora;
                model.Disponible = disponible;
                model.NroCancha = nrocancha;
                proxy.ModificarHorario(id,dia, hora, disponible, nrocancha);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Horario/Delete/5
 
        public ActionResult Delete(int id)
        {
            Horario model = ObtenerHorario(id);
            RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
            model = proxy.ObtenerHorario(id);
            return View(model);
        }

        //
        // POST: /Horario/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                List<Horario> horarios = (List<Horario>)Session["horarios"];
                RegistroHorarioWS.RegistroHorarioClient proxy = new RegistroHorarioWS.RegistroHorarioClient();
                proxy.EliminarHorario(id);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
